package test.work.service;

import java.util.Scanner;

import test.work.dao.InterfaceDao;


public abstract class ItemService<T> {
	protected InterfaceDao<T> dao;//InterfaceDao의 형식으로 StudentDao를 선언함
	protected Scanner sc;
	public ItemService(InterfaceDao<T> dao, Scanner sc) {//생성자
		this.dao = dao;
		this.sc = sc;
		load();//file load
		prnMenu();//각 기능메뉴 실행		
	}
	protected void prnMenu() {//기능메뉴
		T item = null;//커넥션을 이용하여 객체 생성
		int res=0;
		do {
			System.out.print("메뉴[1.삽입 2.삭제 3.수정 4.검색 5.목록 6.종료]");
			res=sc.nextInt();
			switch (res) {
				case 1://입력
					item=inputItemInfo(true);//전체 메뉴 호출
					dao.insertItem(item);//입력 실행
					break;
				case 2://삭제
					dao.prnItemList(null);//기본 출력
					System.out.println("삭제할 항목 입력");
					item=inputItemInfo(false);
					dao.deleteItem(item);
					break;
				case 3://수정
					dao.prnItemList(null);
					System.out.println("수정할 항목 입력");
					item=inputItemInfo(true);
					dao.updateItem(item);
					break;
				case 4://검색
					System.out.println("검색할 항목 입력");
					item=inputItemInfo(false);
					if(dao.searchItem(item)!=null)	
						System.out.println(dao.searchItem(item));						
					else 
						System.out.println("정보가 없습니다.");
					break;
				case 5://출력
					prnSubMenu();//추상클래스					
					break;

				default:
					close();
					res=7;
			}
			
		} while (res<=6);
		
	}
	protected void load(){//로드파일
		dao.loadFile();
	}
	
	protected void close(){//세이브파일
		dao.saveFile();
	}
	
	public abstract T inputItemInfo(boolean gubun);
	public abstract void prnSubMenu();//서브메뉴 출력 추상클래스
}
